home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 03 - 1987 / 03.11 Nov 87 / ZBasic Text Edit / edit field source / Edit Field Tour.BAS next >
Encoding:
BASIC Source File  |  1987-09-22  |  5.9 KB  |  212 lines  |  [TEXT/ZBAS]

  1. 'Edit Field Tour
  2. 'A software explaination of the Text Edit Record
  3. 'WARNING: Some portions of this program do not
  4. 'function properly.  USE AT YOUR OWN RISK!
  5. 'the ZBasic way.
  6. '©MacTutor, 1987
  7. 'By Dave Kelly
  8.  
  9. WINDOW OFF
  10. COORDINATE WINDOW
  11. DEF MOUSE =-1
  12. DIM DestRect%(3)
  13. CALL GETWMGRPORT(WMgrPort&):'Figure out the size of monitor used
  14. PortRecttop=PEEK WORD(WMgrPort&+8)
  15. PortRectleft=PEEK WORD(WMgrPort&+10)
  16. PortRectbottom=PEEK WORD(WMgrPort&+12)
  17. PortRectright=PEEK WORD(WMgrPort&+14)
  18. WINDOW 1,"TEdit Tour",(PortRectleft+4,PortRecttop+42)-(PortRectright-6,PortRectbottom-6),5
  19. TEXT ,,,0
  20. EDIT FIELD 1,defaulttext$,(4,4)-(WINDOW(2)-16,WINDOW(3)/2),2
  21. SCROLL BUTTON 1,0,0,10,10,(WINDOW(2)-16,3)-(WINDOW(2),WINDOW(3)/2+1),0
  22. CALL MOVETO(4,(WINDOW(3)/2)+22)
  23. CALL DRAWSTRING("Change Byte:")
  24. EDIT FIELD 2,,(90,(WINDOW(3)/2)+13)-(105,(WINDOW(3)/2)+25)
  25. EFHndl2&=TEHANDLE(2)
  26. CALL MOVETO(111,(WINDOW(3)/2)+22)
  27. CALL DRAWSTRING("TO")
  28. EDIT FIELD 3,,(140,(WINDOW(3)/2)+13)-(155,(WINDOW(3)/2)+25)
  29. EFHndl3&=TEHANDLE(3)
  30. BUTTON 3,1,"Enter",(170,(WINDOW(3)/2)+11)-(240,(WINDOW(3)/2)+27)
  31. APPLE MENU "TEdit Tour"
  32. MENU 1,0,1,"File"
  33. MENU 1,1,1,"View Text Edit Record"
  34. MENU 1,2,0,"-"
  35. MENU 1,3,1,"Quit/Q"
  36. EDIT MENU 2
  37. DEF FN teWordPeek%(n)=PEEK WORD(PEEK LONG(TEHANDLE(1))+n)
  38. DEF FN teLongPeek&(n)=PEEK LONG(PEEK LONG(TEHANDLE(1))+n)
  39. EDIT FIELD 1:CurrentField=1
  40. ON DIALOG GOSUB "DialogEvent"
  41. ON MENU GOSUB "MenuEvent"
  42. FLUSHEVENTS
  43. MENU ON:DIALOG ON
  44. "Loop"
  45. GOSUB "Info"
  46. GOTO "Loop"
  47. MENU OFF:DIALOG OFF
  48. "DialogEvent"
  49. D=DIALOG(0)
  50. SELECT D
  51. CASE    1
  52. GOSUB "ButtonEvent" 
  53. CASE    2
  54. 'EditEvent
  55. CurrentField=DIALOG(2)
  56. CASE    3
  57. 'Inactive Window
  58. CASE    4
  59. 'Closebox
  60. IF DIALOG(4)=1 THEN END
  61. CASE    5
  62. GOSUB "Refresh"
  63. CASE    6
  64. ' Return Key
  65. CurrentField=DIALOG(6)
  66. IF CurrentField<>1 THEN GOSUB "ButtonEvent"
  67. CASE    7
  68. ' Tab Key
  69. CurrentField=DIALOG(7)
  70. LONG IF CurrentField<>3
  71. EDIT FIELD CurrentField+1
  72. CurrentField=CurrentField+1
  73. XELSE
  74. EDIT FIELD 1
  75. CurrentField=1
  76. END IF
  77. CASE    8
  78. ' Zoomin not used
  79. CASE    9
  80. ' Zoomout not used
  81. CASE    10
  82. ' Shift tab
  83. CurrentField=DIALOG(10)
  84. LONG IF CurrentField<>1
  85. EDIT FIELD CurrentField-1
  86. CurrentField=CurrentField-1
  87. XELSE
  88. EDIT FIELD 3
  89. CurrentField=3
  90. END IF
  91. CASE    11
  92. ' Clear key
  93. CurrentField=DIALOG(11)
  94. CASE    12
  95. ' Left Arrow
  96. CurrentField=DIALOG(12)
  97. CASE    13
  98. ' Right Arrow
  99. CurrentField=DIALOG(13)
  100. CASE    14
  101. ' Up Arrow
  102. CurrentField=DIALOG(14)
  103. CASE    15
  104. ' Down Arrow
  105. CurrentField=DIALOG(15)
  106. CASE    16
  107. ' Keypress
  108. END SELECT
  109. RETURN
  110. "MenuEvent"
  111. MenuNumber=MENU(0)
  112. MenuItem=MENU(1)
  113. MENU
  114. SELECT MenuNumber
  115. CASE 255
  116. GOSUB "appleID"
  117. CASE 1
  118. GOSUB "fileID"
  119. CASE 2
  120. ' Edit Menu
  121. END SELECT
  122. RETURN
  123. "appleID"
  124. IF CurrentField<>1 THEN EDIT FIELD 1:CurrentField=1
  125. WINDOW 2,"",(PortRectleft+10,PortRecttop+30)-(PortRectright-12,PortRectbottom-12),-2
  126. TEXT 4,9,0,0
  127. MOUSE ON
  128. PRINT "Byte";SPC(5);"TEHANDLE = ";TEHANDLE(1)
  129. PRINT " 0  DestRect",FN teWordPeek%(0),FN teWordPeek%(2),FN teWordPeek%(4),FN teWordPeek%(6)
  130. PRINT " 8  ViewRect",FN teWordPeek%(8),FN teWordPeek%(10),FN teWordPeek%(12),FN teWordPeek%(14)
  131. PRINT "16  SelRect",FN teWordPeek%(16),FN teWordPeek%(18),FN teWordPeek%(20),FN teWordPeek%(22)
  132. PRINT "24  LineHeight",FN teWordPeek%(24)
  133. PRINT "26  FontAscent",FN teWordPeek%(26)
  134. PRINT "28  SelPoint",FN teWordPeek%(28),FN teWordPeek%(30)
  135. PRINT "32  SelStart",FN teWordPeek%(32),,"Byte"
  136.  
  137. PRINT "34  SelEnd",FN teWordPeek%(34),,"68  recallines",FN teWordPeek%(68)
  138. PRINT "36  Active",FN teWordPeek%(36),,"70  ClickStuff",FN teWordPeek%(70)
  139. PRINT "38  WordBreak",FN teLongPeek&(38),,"72  CrOnly",FN teWordPeek%(72)
  140. PRINT "42  ClickLoop",FN teLongPeek&(42),,"74  txFont",FN teWordPeek%(74)
  141. PRINT "46  ClickTime",FN teLongPeek&(46),,"76  txFace",FN teWordPeek%(76)
  142. PRINT "50  ClickLoc",FN teWordPeek%(50),,"78  txMode",FN teWordPeek%(78)
  143. PRINT "52  Carettime",FN teLongPeek&(52),,"80  txSize",FN teWordPeek%(80)
  144. PRINT "56  CaretState",FN teWordPeek%(56),,"82  GrafPtr",FN teLongPeek&(82)
  145. PRINT "58  Just",FN teWordPeek%(58),,"86  HighHook",FN teLongPeek&(86)
  146. PRINT "60  teLength",FN teWordPeek%(60),,"90  caretHook",FN teLongPeek&(88)
  147. PRINT "62  hText",FN teLongPeek&(62),,"94  nLines",FN teWordPeek%(94)
  148. PRINT "66  RecalBack",FN teWordPeek%(66),,"96  LineStarts",FN teWordPeek%(96)
  149. PRINT
  150. TEXT 2,18
  151. PRINT SPC(15);"©MacTutor, 1987
  152. TEXT 2,12
  153. PRINT SPC(30);"By Dave Kelly"
  154. PRINT SPC(27);"ZBasic Version 4.0"
  155. MOUSE ON
  156. DO
  157. mous=MOUSE(0)
  158. outsiderect=(MOUSE(1)<0 OR MOUSE(1)>WINDOW(2) OR MOUSE(2)<0 OR MOUSE(2)>WINDOW(3))
  159. UNTIL mous<>0 AND NOT (outsiderect)
  160. MOUSE OFF
  161. WINDOW CLOSE 2
  162. TEXT 4,9,0,0
  163. GOSUB "Refresh"
  164. RETURN
  165. "fileID"
  166. SELECT MenuItem
  167. CASE 1
  168. GOSUB "appleID"
  169. CASE 3
  170. END
  171. END SELECT
  172. RETURN
  173. "Info"
  174. LONG IF CurrentField=1 AND WINDOW(0)=1
  175. TEXT 4,9,0,0
  176. PRINT @(0,17);"destRect:",FN teWordPeek(0),FN teWordPeek(2),FN teWordPeek(4),FN teWordPeek(6)
  177. PRINT @(0,18);"viewRect:",FN teWordPeek(8),FN teWordPeek(10),FN teWordPeek(12),FN teWordPeek(14)
  178. PRINT @(0,19);"selPoint:",FN teWordPeek(28),FN teWordPeek(30),
  179. PRINT @(0,20);"selStart:",FN teWordPeek(32),"selEnd:",FN teWordPeek(34)
  180. PRINT @(0,22);"teLength:",FN teWordPeek(60),"nLines: ";FN teWordPeek(94),"hText",PEEK LONG(FN teLongPeek&(62))
  181. PRINT @(0,23);"txFont:",FN teWordPeek(74),"txFace: ";FN teWordPeek(76),"txSize:",FN teWordPeek(80)
  182. END IF
  183. RETURN
  184. "Refresh"
  185. CALL TEXTFONT(4)
  186. CALL TEXTSIZE(9)
  187. CALL MOVETO(4,(WINDOW(3)/2)+22)
  188. CALL DRAWSTRING("Change Byte:")
  189. CALL MOVETO(111,(WINDOW(3)/2)+22)
  190. CALL DRAWSTRING("TO")
  191. RETURN
  192. "ButtonEvent"
  193. Byte$=EDIT$(2):NewByte$=EDIT$(3)
  194. FOR i= 1 TO LEN(Byte$)
  195. IF MID$(Byte$,i,1)<"0" OR MID$(Byte$,i,1)>"9"THEN Byte$=""
  196. NEXT i
  197. FOR i=1 TO LEN(NewByte$)
  198. IF MID$(NewByte$,i,1)<"0" OR MID$(NewByte$,i,1)>"9"THEN NewByte$=""
  199. NEXT i
  200. IF Byte$="" OR NewByte$="" THEN RETURN
  201. Byte&=VAL(Byte$):NewByte&=VAL(NewByte$)
  202. 'Delete current text  (BOMBS see discussion in MacTutor, Nov. 87)
  203. 'CALL TESETSELECT(0,1000,EFHndl3&)
  204. 'CALL TEDELETE(EFHndl2&)
  205. 'CALL TESETSELECT(0,1000,EFHndl3&)
  206. 'CALL TEDELETE(EFHndl3&)
  207. EDIT FIELD 1:CurrentField=1
  208. POKE WORD PEEK LONG(TEHANDLE(1))+Byte&,NewByte&
  209. CALL SETRECT(DestRect%(0),FN teWordPeek(0),FN teWordPeek(2),FN teWordPeek(4),FN teWordPeek(6))
  210. CALL TEUPDATE(DestRect%(0),TEHANDLE(1))
  211. RETURN
  212.